<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html lang="zh-CN"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta http-equiv="Content-Language" content="zh-CN"><link href="stylesheet.css" media="all" rel="stylesheet" type="text/css">
<title>连接和认证</title>
<script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?d286c55b63a3c54a1e43d10d4c203e75"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script>
</head><body class="SECT1">
<div>
<table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr><th colspan="5" align="center" valign="bottom">PostgreSQL 8.2.3 中文文档</th></tr>
<tr><td width="10%" align="left" valign="top"><a href="runtime-config-file-locations.html" accesskey="P">后退</a></td><td width="10%" align="left" valign="top"><a href="runtime-config.html">快退</a></td><td width="60%" align="center" valign="bottom">章17. 服务器配置</td><td width="10%" align="right" valign="top"><a href="runtime-config.html">快进</a></td><td width="10%" align="right" valign="top"><a href="runtime-config-resource.html" accesskey="N">前进</a></td></tr>
</table>
<hr align="LEFT" width="100%"></div>
<div class="SECT1"><h1 class="SECT1"><a name="RUNTIME-CONFIG-CONNECTION">17.3. 连接和认证</a></h1>
<div class="SECT2"><h2 class="SECT2"><a name="RUNTIME-CONFIG-CONNECTION-SETTINGS">17.3.1. 连接设置</a></h2>
<div class="VARIABLELIST">
<dl>
<dt><a name="GUC-LISTEN-ADDRESSES"></a><tt class="VARNAME">listen_addresses</tt> (<tt class="TYPE">string</tt>)</dt>
<dd><p>声明服务器监听客户端连接的 TCP/IP 地址。值是一个逗号分隔的主机名和/或数字 IP 地址。特殊项 <tt class="LITERAL">*</tt> 对应所有可用 IP 接口。如果这个列表是空的，那么服务器不会监听任何 IP 接口，这种情况下，只有 Unix 域套接字可以用于连接数据库。缺省值 <span class="SYSTEMITEM">localhost</span> 只允许进行本地"回环"连接。这个参数只能在服务器启动的时候设置。</p></dd>
<dt><a name="GUC-PORT"></a><tt class="VARNAME">port</tt> (<tt class="TYPE">integer</tt>)</dt>
<dd><p>服务器监听的 TCP 端口；缺省是 5432 。请注意同一个端口号用于服务器监听的所有 IP 地址。这个参数只能在服务器启动的时候设置。</p></dd>
<dt><a name="GUC-MAX-CONNECTIONS"></a><tt class="VARNAME">max_connections</tt> (<tt class="TYPE">integer</tt>)</dt>
<dd><p>允许和数据库连接的最大并发连接数。缺省通常是 100 ，但是如果内核设置不支持这么大(在 <span class="APPLICATION">initdb</span> 的时候判断)，可能会比这个数少。这个参数只能在服务器启动的时候设置。</p>
<p>增大这个参数可能导致 PostgreSQL 要求更多的 <span class="SYSTEMITEM">System V</span> 共享内存或者信号灯，可能超过操作系统缺省配置的许可值。必要的话，参阅<a href="kernel-resources.html#SYSVIPC">节16.4.1</a>获取有关如何调节这个参数的信息。</p></dd>
<dt><a name="GUC-SUPERUSER-RESERVED-CONNECTIONS"></a><tt class="VARNAME">superuser_reserved_connections</tt> (<tt class="TYPE">integer</tt>)</dt>
<dd><p>决定为 PostgreSQL 超级用户连接而保留的连接"槽位"。一次最多可以同时激活 <a href="runtime-config-connection.html#GUC-MAX-CONNECTIONS">max_connections</a> 个连接。在活跃的并发连数接到了 <tt class="VARNAME">max_connections</tt> 减去 <tt class="VARNAME">superuser_reserved_connections</tt> 的时候，新的连接就只能由超级用户发起了。</p>
<p>缺省值是 3 。这个值必须小于 <tt class="VARNAME">max_connections</tt> 的值。这个参数只能在服务器启动的时候设置。</p></dd>
<dt><a name="GUC-UNIX-SOCKET-DIRECTORY"></a><tt class="VARNAME">unix_socket_directory</tt> (<tt class="TYPE">string</tt>)</dt>
<dd><p>声明服务器监听客户端连接的 Unix 域套接字目录。缺省通常是 <tt class="FILENAME">/tmp</tt> ，但是可以在编译的时候修改。这个值只能在服务器启动的时候设置。</p></dd>
<dt><a name="GUC-UNIX-SOCKET-GROUP"></a><tt class="VARNAME">unix_socket_group</tt> (<tt class="TYPE">string</tt>)</dt>
<dd><p>设置 Unix 域套接字的所属组(套接字的所属用户总是启动服务器的用户)。可以与选项 <tt class="VARNAME">unix_socket_permissions</tt> 一起用于对套接字进行访问控制。缺省是一个空字符串，表示当前用户的缺省组。这个选项只能在服务器启动的时候设置。</p></dd>
<dt><a name="GUC-UNIX-SOCKET-PERMISSIONS"></a><tt class="VARNAME">unix_socket_permissions</tt> (<tt class="TYPE">integer</tt>)</dt>
<dd><p>设置 Unix 域套接字的访问权限。Unix 域套接字使用普通的 Unix 文件系统权限集。这个选项值应该是数值的形式，也就是那种 Unix 域套接字调用 <code class="FUNCTION">chmod</code> 和 <code class="FUNCTION">umask</code> 接受的形式。如果使用自定义的八进制格式，数字必须以 <tt class="LITERAL">0</tt> 开头。</p>
<p>缺省的权限是 <tt class="LITERAL">0777</tt> ，意思是任何人都可以连接。合理的候选是 <tt class="LITERAL">0770</tt>(只有用户和同组的人可以访问，又见 <tt class="VARNAME">unix_socket_group</tt>)和 <tt class="LITERAL">0700</tt>(只有用户自己可以访问)。请注意，对于 Unix 域套接字，只有写权限有意义，读和执行权限没有任何意义。</p>
<p>这个访问控制机制与<a href="client-authentication.html">章20</a>里描述的用户认证毫无关系。</p>
<p>这个值只能在服务器启动的时候设置。</p></dd>
<dt><a name="GUC-BONJOUR-NAME"></a><tt class="VARNAME">bonjour_name</tt> (<tt class="TYPE">string</tt>)</dt>
<dd><p>声明 Bonjour 广播名称。空字符串 <tt class="LITERAL">''</tt>(缺省值)表示使用计算机名。如果编译时没有打开 Bonjour 支持那么将忽略这个参数。这个值只能在服务器启动的时候设置。</p></dd>
<dt><a name="GUC-TCP-KEEPALIVES-IDLE"></a><tt class="VARNAME">tcp_keepalives_idle</tt> (<tt class="TYPE">integer</tt>)</dt>
<dd><p>在那些支持 <tt class="SYMBOL">TCP_KEEPIDLE</tt> 套接字选项的系统上，声明发送保持活跃信号的间隔秒数，不发送保持活跃信号，连接就会处于闲置状态。零使用系统缺省。如果不支持 <tt class="SYMBOL">TCP_KEEPIDLE</tt> ，这个参数必须为零。在通过 Unix 域套接字进行的连接上，这个选项被忽略。</p></dd>
<dt><a name="GUC-TCP-KEEPALIVES-INTERVAL"></a><tt class="VARNAME">tcp_keepalives_interval</tt> (<tt class="TYPE">integer</tt>)</dt>
<dd><p>在那些支持 <tt class="SYMBOL">TCP_KEEPINTVL</tt> 套接字选项的系统上，以秒数声明在重新传输之间等待响应的时间。零使用系统缺省。如果不支持 <tt class="SYMBOL">TCP_KEEPINTVL</tt> ，这个参数必须为零。在通过 Unix 域套接字进行的连接上，这个选项被忽略。</p></dd>
<dt><a name="GUC-TCP-KEEPALIVES-COUNT"></a><tt class="VARNAME">tcp_keepalives_count</tt> (<tt class="TYPE">integer</tt>)</dt>
<dd><p>在支持 <tt class="SYMBOL">TCP_KEEPCNT</tt> 套接字选项的系统上，声明在切断连接之前可以丢失多少个保持活跃信号。零使用系统缺省。如果不支持 <tt class="SYMBOL">TCP_KEEPCNT</tt> ，这个参数必须为零。在通过 Unix 域套接字进行的连接上，这个选项被忽略。</p></dd>
</dl>
</div>
</div>
<div class="SECT2"><h2 class="SECT2"><a name="RUNTIME-CONFIG-CONNECTION-SECURITY">17.3.2. 安全和认证</a></h2>
<div class="VARIABLELIST">
<dl>
<dt><a name="GUC-AUTHENTICATION-TIMEOUT"></a><tt class="VARNAME">authentication_timeout</tt> (<tt class="TYPE">integer</tt>)</dt>
<dd><p>完成客户端认证的最长时间，以秒计。如果一个客户端没有在这段时间里完成认证协议，服务器将中断连接。这样就避免了出问题的客户端无限制地占据连接资源。缺省是 60 秒。这个选项只能在命令行上或者在 <tt class="FILENAME">postgresql.conf</tt> 里设置。</p></dd>
<dt><a name="GUC-SSL"></a><tt class="VARNAME">ssl</tt> (<tt class="TYPE">boolean</tt>)</dt>
<dd><p>启用 SSL 连接。请在使用这个选项之前阅读<a href="ssl-tcp.html">节16.7</a>。缺省是 <tt class="LITERAL">off</tt> 。这个选项只能在服务器启动的时候设置。</p></dd>
<dt><a name="GUC-PASSWORD-ENCRYPTION"></a><tt class="VARNAME">password_encryption</tt> (<tt class="TYPE">boolean</tt>)</dt>
<dd><p>在 <a href="sql-createuser.html"><i>CREATE USER</i></a> 或 <a href="sql-alteruser.html"><i>ALTER USER</i></a> 里声明了一个口令，而又没有写 <tt class="LITERAL">ENCRYPTED</tt> 或 <tt class="LITERAL">UNENCRYPTED</tt> 的时候，这个选项决定口令是否要加密。缺省是 <tt class="LITERAL">on</tt>(加密口令)。</p></dd>
<dt><a name="GUC-KRB-SERVER-KEYFILE"></a><tt class="VARNAME">krb_server_keyfile</tt> (<tt class="TYPE">string</tt>)</dt>
<dd><p>设置 Kerberos 服务器键字文件的位置。参阅<a href="auth-methods.html#KERBEROS-AUTH">节20.2.3</a>获取细节。这个选项只能在服务器启动的时候设置。</p></dd>
<dt><a name="GUC-KRB-SRVNAME"></a><tt class="VARNAME">krb_srvname</tt> (<tt class="TYPE">string</tt>)</dt>
<dd><p>设置 Kerberos 服务名。参阅<a href="auth-methods.html#KERBEROS-AUTH">节20.2.3</a>获取细节。这个值只能在服务器启动的时候设置。</p></dd>
<dt><a name="GUC-KRB-SERVER-HOSTNAME"></a><tt class="VARNAME">krb_server_hostname</tt> (<tt class="TYPE">string</tt>)</dt>
<dd><p>设置服务主的主机名部分。这个和 <tt class="VARNAME">krb_srvname</tt> 结合在一起生成完整的服务主，比如：<tt class="VARNAME">krb_srvname</tt><tt class="LITERAL">/</tt><tt class="VARNAME">krb_server_hostname</tt><tt class="LITERAL">@</tt>REALM 。如果没有设置，缺省是服务器主机名。参阅<a href="auth-methods.html#KERBEROS-AUTH">节20.2.3</a>获取细节。这个值只能在服务器启动的时候设置。</p></dd>
<dt><a name="GUC-KRB-CASEINS-USERS"></a><tt class="VARNAME">krb_caseins_users</tt> (<tt class="TYPE">boolean</tt>)</dt>
<dd><p>设置 Kerberos 用户名是否大小写无关。缺省是 <tt class="LITERAL">off</tt>(大小写相关)。这个选项只能在服务器启动的时候设置。</p></dd>
<dt><a name="GUC-DB-USER-NAMESPACE"></a><tt class="VARNAME">db_user_namespace</tt> (<tt class="TYPE">boolean</tt>)</dt>
<dd><p>允许针对每个数据库的用户名。缺省是关闭的。这个选项只能在命令行上或者在 <tt class="FILENAME">postgresql.conf</tt> 里设置。</p>
<p>如果打开这个选项，你应该像 <tt class="LITERAL">username@dbname</tt> 这样创建用户。在给一个正在连接的客户端传递 <tt class="LITERAL">username</tt> 的时候，必须给用户名附加 <tt class="LITERAL">@</tt> 和数据库名字，然后服务器查找该数据库相关的用户名字。请注意，如果你在 SQL 环境里创建包含 <tt class="LITERAL">@</tt> 的名字时，你需要用引号包围用户名。</p>
<p>打开这个选项之后，你还是能够创建普通的全局用户。只要在客户端声明用户的时候附加一个 <tt class="LITERAL">@</tt> 即可。在服务器查找这个用户名之前，这个 <tt class="LITERAL">@</tt> 会被剥除。</p>
<div class="NOTE">
<blockquote class="NOTE">
<p><b>【注意】</b>这个特性只是临时试验用途，直到找到一个完全的解决方案。那个时候，这个选项将被删除。</p>
</blockquote>
</div></dd>
</dl>
</div>
</div>
</div>
<div>
<hr align="LEFT" width="100%">
<table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr><td width="33%" align="left" valign="top"><a href="runtime-config-file-locations.html" accesskey="P">后退</a></td><td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">首页</a></td><td width="33%" align="right" valign="top"><a href="runtime-config-resource.html" accesskey="N">前进</a></td></tr>
<tr><td width="33%" align="left" valign="top">文件位置</td><td width="34%" align="center" valign="top"><a href="runtime-config.html" accesskey="U">上一级</a></td><td width="33%" align="right" valign="top">资源消耗</td></tr>
</table>
</div>
</body></html>